home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / xfs / xfs_bit.h < prev    next >
C/C++ Source or Header  |  2005-10-18  |  3KB  |  86 lines

  1. /*
  2.  * Copyright (c) 2000, 2002 Silicon Graphics, Inc.  All Rights Reserved.
  3.  *
  4.  * This program is free software; you can redistribute it and/or modify it
  5.  * under the terms of version 2 of the GNU General Public License as
  6.  * published by the Free Software Foundation.
  7.  *
  8.  * This program is distributed in the hope that it would be useful, but
  9.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  10.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11.  *
  12.  * Further, this software is distributed without any warranty that it is
  13.  * free of the rightful claim of any third person regarding infringement
  14.  * or the like.  Any license provided herein, whether implied or
  15.  * otherwise, applies only to this software file.  Patent licenses, if
  16.  * any, provided herein do not apply to combinations of this program with
  17.  * other software, or any other product whatsoever.
  18.  *
  19.  * You should have received a copy of the GNU General Public License along
  20.  * with this program; if not, write the Free Software Foundation, Inc., 59
  21.  * Temple Place - Suite 330, Boston MA 02111-1307, USA.
  22.  *
  23.  * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
  24.  * Mountain View, CA  94043, or:
  25.  *
  26.  * http://www.sgi.com
  27.  *
  28.  * For further information regarding this notice, see:
  29.  *
  30.  * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
  31.  */
  32. #ifndef __XFS_BIT_H__
  33. #define    __XFS_BIT_H__
  34.  
  35. /*
  36.  * XFS bit manipulation routines.
  37.  */
  38.  
  39. /*
  40.  * masks with n high/low bits set, 32-bit values & 64-bit values
  41.  */
  42. #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_MASK32HI)
  43. __uint32_t xfs_mask32hi(int n);
  44. #define    XFS_MASK32HI(n)        xfs_mask32hi(n)
  45. #else
  46. #define    XFS_MASK32HI(n)        ((__uint32_t)-1 << (32 - (n)))
  47. #endif
  48. #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_MASK64HI)
  49. __uint64_t xfs_mask64hi(int n);
  50. #define    XFS_MASK64HI(n)        xfs_mask64hi(n)
  51. #else
  52. #define    XFS_MASK64HI(n)        ((__uint64_t)-1 << (64 - (n)))
  53. #endif
  54. #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_MASK32LO)
  55. __uint32_t xfs_mask32lo(int n);
  56. #define    XFS_MASK32LO(n)        xfs_mask32lo(n)
  57. #else
  58. #define    XFS_MASK32LO(n)        (((__uint32_t)1 << (n)) - 1)
  59. #endif
  60. #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_MASK64LO)
  61. __uint64_t xfs_mask64lo(int n);
  62. #define    XFS_MASK64LO(n)        xfs_mask64lo(n)
  63. #else
  64. #define    XFS_MASK64LO(n)        (((__uint64_t)1 << (n)) - 1)
  65. #endif
  66.  
  67. /* Get high bit set out of 32-bit argument, -1 if none set */
  68. extern int xfs_highbit32(__uint32_t v);
  69.  
  70. /* Get low bit set out of 64-bit argument, -1 if none set */
  71. extern int xfs_lowbit64(__uint64_t v);
  72.  
  73. /* Get high bit set out of 64-bit argument, -1 if none set */
  74. extern int xfs_highbit64(__uint64_t);
  75.  
  76. /* Count set bits in map starting with start_bit */
  77. extern int xfs_count_bits(uint *map, uint size, uint start_bit);
  78.  
  79. /* Count continuous one bits in map starting with start_bit */
  80. extern int xfs_contig_bits(uint *map, uint size, uint start_bit);
  81.  
  82. /* Find next set bit in map */
  83. extern int xfs_next_bit(uint *map, uint size, uint start_bit);
  84.  
  85. #endif    /* __XFS_BIT_H__ */
  86.